1. Field of the Invention
This invention relates, generally, to the field of computing. More specifically, it relates to client-side data storage systems.
2. Brief Description of the Prior Art
Historically, persistent local storage has been one of the key factors in preventing Web applications from achieving an improved user experience typically associated with native client applications. Native applications have had the benefit of using a computer's operating system for storage and retrieval of application-specific data. Whereas, Web applications have traditionally used Cookies for client-side data storage.
There are four current options for client-side storage: Cookies, Web-storage (local and session), Web SQL Database, and IndexedDB. Each of the current available options in today's technology has its own specific shortcomings described in the next paragraphs.
Cookies typically store user identifying information on the user's browser as name-value pairs. The stored data corresponds with one or more URLs, such that when a user requests a URL, the Web browser automatically sends one or more cookies, along with the corresponding URL request, to the Web server. Cookies can be very useful for customizing web pages based on user-identified preferences. However, cookies contain many critical downsides, including: (1) cookies are included in HTTP requests, resulting in slow Web application performance associated with the unnecessary data transmission; (2) the HTTP requests transmit the data in an unencrypted format; (3) the storage capacity is limited to roughly 4 KB of data; and (4) are designed as very simple key/value persistent storage system having its own set of shortcomings as described below.
The HTML5 sessionStorage object is equivalent to the HTML5 localStorage object, except that it stores the data for only one session. In the HTML5 sessionStorage the data is deleted when the user closes the browser window. HTML5 localStorage and HTML5 sessionStorage are both a very simple key/value persistence storage system having their own set of shortcomings. All key/value storage systems have the following common shortcomings: (1) they cannot store structured data (only text strings), (2) cannot provide in-order retrieval of keys, (3) cannot efficiently search over-values, (4) cannot store duplicate keys, and (4) lack the ability to relate and correlate the information.
In addition, there is no query language or schemas, which affects the ability to scale where there is a need to impose organization on a larger data set. Furthermore, transactional safety is not a standard feature, which is an obvious issue now-a-days.
The Web SQL Database specification provides a thin wrapper around a SQL Database. The problem with the Web SQL Database specification is that it is not fully supported by all database vendors. Since Nov. 18, 2010, the W3C announced that Web SQL database is a deprecated specification. This is a recommendation for web developers to no longer use the technology as effectively, the spec will receive no new updates, and browser vendors are not encouraged to support the technology. Web SQL Database is basically SQLite (a flat file database) embedded into the Web browser. This option contains the usual problems associated with flat file database—high level of concurrency and missing features.
The IndexedDB API exposes an object store and uses an asynchronous API, which is a non-blocking system and, as such, will not receive data through return values. Rather, it will receive data delivered through to a defined callback function. IndexedDB is transactional in nature and only provides asynchronous transactions. It is not possible to perform any operation (read/write) outside of a transaction (both an object store and a transaction object needs to be created, specific to the object store, and as long as the object is alive, the operation can be perform on that object store. Furthermore, IndexedDB is not supported by all vendors.
An additional problem associated with all of the current technologies is the possibility of experiencing a race condition. A race condition is an undesirable situation that occurs when a device or system attempts to perform two or more operations at the same time, but because of the nature of the device or system, many of the operations must take part in the proper sequence (especially in maintaining state of objects) in order to be completed correctly. In order to overcome a race condition, it is essential that the system in many cases use synchronous transactions. However, synchronous transactions are often the cause of slow computing because of the often-arising need to transfer large amount of data. Therefore, it is crucial to improve transfer speeds and data size to prevent slow computing.
Accordingly, what is needed is a more efficient and easier method and system for client side persistent storage. However, in view of the art considered as a whole at the time the present invention was made, it was not obvious to those of ordinary skill in the field of this invention how the shortcomings of the prior art could be overcome.
All referenced publications are incorporated herein by reference in their entirety. Furthermore, where a definition or use of a term in a reference, which is incorporated by reference herein, is inconsistent or contrary to the definition of that term provided herein, the definition of that term provided herein applies and the definition of that term in the reference does not apply.
While certain aspects of conventional technologies have been discussed to facilitate disclosure of the invention, Applicants in no way disclaim these technical aspects, and it is contemplated that the claimed invention may encompass one or more of the conventional technical aspects discussed herein.
The present invention may address one or more of the problems and deficiencies of the prior art discussed above. However, it is contemplated that the invention may prove useful in addressing other problems and deficiencies in a number of technical areas. Therefore, the claimed invention should not necessarily be construed as limited to addressing any of the particular problems or deficiencies discussed herein.
In this specification, where a document, act or item of knowledge is referred to or discussed, this reference or discussion is not an admission that the document, act or item of knowledge or any combination thereof was at the priority date, publicly available, known to the public, part of common general knowledge, or otherwise constitutes prior art under the applicable statutory provisions; or is known to be relevant to an attempt to solve any problem with which this specification is concerned.